package com.example.linearlayoutdemo;

import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;

import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

public class ListViewModel extends ViewModel {
    // 用 MutableLiveData 包装列表数据（支持数据变更通知）
    //在Java中，final 修饰变量时，表示该变量一旦被初始化赋值，就不能再被重新赋值（即变量的 “引用地址” 不可变）。
    private final MutableLiveData<List<String>> mListData = new MutableLiveData<>();

    // 获取 LiveData（对外暴露不可变的 LiveData，防止外部直接修改）
    public MutableLiveData<List<String>> getListData() {
        return mListData;
    }

    // 初始化数据（模拟网络请求或本地加载）
    public void loadData() {
        // 模拟延迟加载（如网络请求）
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                // 模拟数据源
                List<String> data = new ArrayList<>();
                for(int i = 0; i < 100; i++) {
                    data.add("第"+i+"条数据");
                }
                //主线程更新数据（LiveData 自动切换到主线程）
                //这里不能用setValue，因为setValue只能在主线程调用
                mListData.postValue(data);
            }
        }, 1000); // 延迟 1 秒加载，模拟网络耗时
    }

    // 追加数据（示例：下拉加载更多）
    public void refreshData() {
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                // 获取当前数据，追加新内容
                List<String> currentData = mListData.getValue();
                if(currentData == null) {
                    currentData = new ArrayList<>();
                }
                int start = currentData.size()+1;
                for(int i = start; i < start + 20; i++) {
                    currentData.add("加载更多数据项，第" + i + "条");
                }
                mListData.postValue(currentData);
            }
        }, 1000);
    }
}
